﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CAGFIP.DataAccess.DataSetTableAdapters;
using CAGFIP.DataAccess;

namespace CAGFIP.Edicao
{
    public class AssuntoDAODebug : IAssuntoDAO
    {
        #region Fields

        private Dictionary<int, Assunto> assuntos;
        private static readonly AssuntoDAODebug instance = new AssuntoDAODebug();

        private int cadastroId = 5000;

        #endregion

        #region Constructors

        private AssuntoDAODebug() { }

        #endregion

        #region Properties

        public static AssuntoDAODebug Instance
        {
            get { return instance; }
        }

        private Dictionary<int, Assunto> Assuntos
        {
            get
            {
                if (this.assuntos == null)
                {
                    //TODO: fill with preset debug assuntos
                    var assuntos = new Dictionary<int, Assunto>();
                    assuntos.Add(0, new Assunto(0, "esporte", "esporte desc"));
                    assuntos.Add(1, new Assunto(1, "cinema", "cinema desc"));

                    this.assuntos = assuntos;
                }
                return this.assuntos;
            }
        }

        #endregion

        #region Methods

        public void AlterarAssunto(Assunto assunto)
        {
            Assuntos[assunto.Id] = assunto;
        }

        public void CadastrarAssunto(Assunto assunto)
        {
            int id = assunto.Id;
            if (id == -1)
                id = cadastroId++; 
            Assuntos.Add(id, assunto);
        }

        public void RemoverAssunto(int idAssunto)
        {
            Assuntos.Remove(idAssunto);
        }

        public List<Assunto> VisualizarAssuntos()
        {
            var list = new List<Assunto>();

            foreach (var a in Assuntos.Values)
                list.Add(new Assunto(a.Id, a.Nome, a.Descricao));

            return list;
        }

        public DataSet.AssuntoDataTable VisualizarAssuntoDataSet()
        {
            return new DataSet.AssuntoDataTable();
        }

        #endregion
    }
}
